package com.eastfair.pay.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.eastfair.core.base.entity.Entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import static com.eastfair.core.utils.DateUtils.DEFAULT_DATE_TIME_FORMAT;
import com.eastfair.annotation.model.EchoVO;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 * 认款记录
 * </p>
 *
 * @author fwl
 * @since 2023-03-24
 */
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("pay_collect_record")
@ApiModel(value = "CollectRecord", description = "认款记录")
@AllArgsConstructor
public class CollectRecord extends Entity<Long> implements EchoVO {

    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    private Map<String, Object> echoMap = new HashMap<>();
    /**
     * 是否启用：1是；0否
     */
    @ApiModelProperty(value = "是否启用：1是；0否")
    @TableField(value = "is_enabled")
    @Excel(name = "是否启用：1是；0否")
    private Integer isEnabled;

    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    @TableField(value = "is_deleted")
    @Excel(name = "是否删除：1是；0否")
    private Integer isDeleted;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    @TableField(value = "project_id")
    @Excel(name = "项目id")
    private Long projectId;

    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    @TableField(value = "subsystem_id")
    @Excel(name = "子系统id")
    private Long subsystemId;

    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    @TableField(value = "tenant_id")
    @Excel(name = "租户id")
    private Long tenantId;

    /**
     * 付款计划id
     */
    @ApiModelProperty(value = "付款计划id")
    @TableField(value = "payment_plan_id")
    @Excel(name = "付款计划id")
    private Long paymentPlanId;

    /**
     * 付款记录id
     */
    @ApiModelProperty(value = "付款记录id")
    @TableField(value = "payment_record_id")
    @Excel(name = "付款记录id")
    private Long paymentRecordId;

    /**
     * 款项类型(数据字典)
     */
    @ApiModelProperty(value = "款项类型(数据字典)")
    @Size(max = 255, message = "款项类型(数据字典)长度不能超过255")
    @TableField(value = "collect_type", condition = LIKE)
    @Excel(name = "款项类型(数据字典)")
    private String collectType;

    /**
     * 认款金额
     */
    @ApiModelProperty(value = "认款金额")
    @TableField(value = "collect_amount")
    @Excel(name = "认款金额")
    private BigDecimal collectAmount;

    /**
     * 业务合同id,订单id
     */
    @ApiModelProperty(value = "业务合同id,订单id")
    @TableField(value = "business_id")
    @Excel(name = "业务合同id,订单id")
    private Long businessId;

    /**
     * 业务模块枚举
     */
    @ApiModelProperty(value = "业务模块枚举")
    @Size(max = 255, message = "业务模块枚举长度不能超过255")
    @TableField(value = "business_type", condition = LIKE)
    @Excel(name = "业务模块枚举")
    private String businessType;

    /**
     * 单号
     */
    @ApiModelProperty(value = "单号")
    @Size(max = 255, message = "单号长度不能超过255")
    @TableField(value = "business_code", condition = LIKE)
    @Excel(name = "单号")
    private String businessCode;

    /**
     * 付款方式(数据字典)
     */
    @ApiModelProperty(value = "付款方式(数据字典)")
    @Size(max = 255, message = "付款方式(数据字典)长度不能超过255")
    @TableField(value = "pay_type", condition = LIKE)
    @Excel(name = "付款方式(数据字典)")
    private String payType;

    /**
     * 对方户名
     */
    @ApiModelProperty(value = "对方户名")
    @Size(max = 255, message = "对方户名长度不能超过255")
    @TableField(value = "bank_account_name", condition = LIKE)
    @Excel(name = "对方户名")
    private String bankAccountName;

    /**
     * 认款流水号
     */
    @ApiModelProperty(value = "认款流水号")
    @Size(max = 255, message = "认款流水号长度不能超过255")
    @TableField(value = "mainno", condition = LIKE)
    @Excel(name = "认款流水号")
    private String mainno;


    @Builder
    public CollectRecord(Long id, Long createdBy, LocalDateTime createTime, Long updatedBy, LocalDateTime updateTime, 
                    Integer isEnabled, Integer isDeleted, Long projectId, Long subsystemId, Long tenantId, 
                    Long paymentPlanId, Long paymentRecordId, String collectType, BigDecimal collectAmount, Long businessId, String businessType, 
                    String businessCode, String payType, String bankAccountName, String mainno) {
        this.id = id;
        this.createdBy = createdBy;
        this.createTime = createTime;
        this.updatedBy = updatedBy;
        this.updateTime = updateTime;
        this.isEnabled = isEnabled;
        this.isDeleted = isDeleted;
        this.projectId = projectId;
        this.subsystemId = subsystemId;
        this.tenantId = tenantId;
        this.paymentPlanId = paymentPlanId;
        this.paymentRecordId = paymentRecordId;
        this.collectType = collectType;
        this.collectAmount = collectAmount;
        this.businessId = businessId;
        this.businessType = businessType;
        this.businessCode = businessCode;
        this.payType = payType;
        this.bankAccountName = bankAccountName;
        this.mainno = mainno;
    }

}
